function hquad (args) ******************************************************* **** INPUT Variables **** ******************************************************* 'numargs 'args numargs = result DEBUG = FALSE n = 0 num = 0 while ( num < numargs ) num = num + 1 if( subwrd(args,num) = '-EXPID' ) ; EXPID = subwrd(args,num+1) ; endif if( subwrd(args,num) = '-OUTPUT' ) ; OUTPUT = subwrd(args,num+1) ; endif if( subwrd(args,num) = '-DEBUG' ) ; DEBUG = subwrd(args,num+1) ; endif if( subwrd(args,num) = '-LEV' ) ; LEV = subwrd(args,num+1) ; endif * Read SEASONS * ----------- if( subwrd(args,num) = '-SEASON' ) seasons = '' k = 1 while( k > 0 ) L = num + k season = subwrd(args,L) if( season = '' ) k = -1 else bit = substr(season,1,1) if( bit = '-' ) k = -1 else seasons = seasons % ' ' % season k = k+1 endif endif endwhile endif endwhile 'uppercase 'seasons seasons = result 'numargs ' seasons numseas = result * Initialize * ---------- "reinit" 'set display color white' 'set csmooth on' 'c' * Get Environment Variables * ------------------------- 'getenv "GEOSUTIL"' geosutil = result 'getenv "VERIFICATION"' verification = result * Get Model Primary Fields * ------------------------ 'getvar U DYN' umname = subwrd(result,1) umfile = subwrd(result,2) umscale = subwrd(result,3) mdesc = subwrd(result,4) 'getvar V DYN' vmname = subwrd(result,1) vmfile = subwrd(result,2) vmscale = subwrd(result,3) 'getvar T DYN' tmname = subwrd(result,1) tmfile = subwrd(result,2) tmscale = subwrd(result,3) 'getvar ZLE DYN' hmname = subwrd(result,1) hmfile = subwrd(result,2) hmscale = subwrd(result,3) 'getvar OMEGA DYN' wmname = subwrd(result,1) wmfile = subwrd(result,2) wmscale = subwrd(result,3) 'getvar Q MOIST' qmname = subwrd(result,1) qmfile = subwrd(result,2) qmscale = subwrd(result,3) 'define umscale = 'umscale 'define vmscale = 'vmscale 'define tmscale = 'tmscale 'define hmscale = 'hmscale 'define wmscale = 'wmscale 'define qmscale = 'qmscale * Set Model CoVariance Names * -------------------------- result = setname (umname,vmname,umfile,m) uvmname = subwrd(result,1) uvmfile = subwrd(result,2) uvmscale = umscale*vmscale result = setname (vmname,tmname,vmfile,m) vtmname = subwrd(result,1) vtmfile = subwrd(result,2) vtmscale = vmscale*tmscale result = setname (vmname,qmname,vmfile,m) vqmname = subwrd(result,1) vqmfile = subwrd(result,2) vqmscale = vmscale*qmscale result = setname (wmname,tmname,wmfile,m) wtmname = subwrd(result,1) wtmfile = subwrd(result,2) wtmscale = wmscale*tmscale result = setname (wmname,qmname,wmfile,m) wqmname = subwrd(result,1) wqmfile = subwrd(result,2) wqmscale = wmscale*qmscale 'define uvmscale = 'uvmscale 'define vtmscale = 'vtmscale 'define vqmscale = 'vqmscale 'define wtmscale = 'wtmscale 'define wqmscale = 'wqmscale ************************************************** **** Compute Quadratics **** ************************************************** 'set dfile 'umfile 'getinfo undef' undef = result 'setlons' 'setdates' 'run getenv "BEGDATE"' begdate = result 'run getenv "ENDDATE"' enddate = result 'set lat -90 90' 'getdates' 'set lev 'LEV 'makequad -U 'umname' -V 'vmname' -T 'tmname' -Q 'qmname' -H 'hmname' -W 'wmname' -UV 'uvmname' -VT 'vtmname' -VQ 'vqmname' -WT 'wtmname' -WQ 'wqmname' -TAG m' if( umname != 'NULL' & vmname != 'NULL' ) 'define KEsm = 0.5*( Var'umname'sm + Var'vmname'sm )' 'define KEpm = 0.5*( Var'umname'pm + Var'vmname'pm )' else 'define KEsm = lat-lat+lon-lon+'undef 'define KEpm = lat-lat+lon-lon+'undef endif 'seasonal KEsm' 'seasonal KEpm' 'seasonal Var'umname'sm' 'seasonal Var'vmname'sm' 'seasonal Var'tmname'sm' 'seasonal Var'qmname'sm' 'seasonal Var'hmname'sm' 'seasonal Var'wmname'sm' 'seasonal Var'umname'pm' 'seasonal Var'vmname'pm' 'seasonal Var'tmname'pm' 'seasonal Var'qmname'pm' 'seasonal Var'hmname'pm' 'seasonal Var'wmname'pm' 'seasonal Cov'umname''vmname'sm' 'seasonal Cov'vmname''tmname'sm' 'seasonal Cov'vmname''qmname'sm' 'seasonal Cov'wmname''tmname'sm' 'seasonal Cov'wmname''qmname'sm' 'seasonal Cov'umname''vmname'pm' 'seasonal Cov'vmname''tmname'pm' 'seasonal Cov'vmname''qmname'pm' 'seasonal Cov'wmname''tmname'pm' 'seasonal Cov'wmname''qmname'pm' 'undefine KEsm' 'undefine KEpm' ********************************************************************* **** Loop over Possible Verification Datasets for Comparison **** ********************************************************************* ' getnumrc 'geosutil'/plots/quad' rcinfo = result numrc = subwrd( rcinfo,1 ) num = 1 cnt = 0 while( num <= numrc ) loc = num + 1 rcfile = subwrd( rcinfo,loc ) * Get OBS Primary Fields * ---------------------- 'getobs U DYN 'rcfile uoname = subwrd(result,1) uofile = subwrd(result,2) uoscale = subwrd(result,3) odesc = subwrd(result,4) obsid = subwrd(result,5) 'getobs V DYN 'rcfile voname = subwrd(result,1) vofile = subwrd(result,2) voscale = subwrd(result,3) 'getobs T DYN 'rcfile toname = subwrd(result,1) tofile = subwrd(result,2) toscale = subwrd(result,3) 'getobs ZLE DYN 'rcfile honame = subwrd(result,1) hofile = subwrd(result,2) hoscale = subwrd(result,3) 'getobs OMEGA DYN 'rcfile woname = subwrd(result,1) wofile = subwrd(result,2) woscale = subwrd(result,3) 'getobs Q MOIST 'rcfile qoname = subwrd(result,1) qofile = subwrd(result,2) qoscale = subwrd(result,3) 'define uoscale = 'uoscale 'define voscale = 'voscale 'define toscale = 'toscale 'define hoscale = 'hoscale 'define woscale = 'woscale 'define qoscale = 'qoscale * Set Obs CoVariance Names * ------------------------ result = setname (uoname,voname,uofile,o) uvoname = subwrd(result,1) uvofile = subwrd(result,2) uvoscale = uoscale*voscale result = setname (voname,toname,vofile,o) vtoname = subwrd(result,1) vtofile = subwrd(result,2) vtoscale = voscale*toscale result = setname (voname,qoname,vofile,o) vqoname = subwrd(result,1) vqofile = subwrd(result,2) vqoscale = voscale*qoscale result = setname (woname,toname,wofile,o) wtoname = subwrd(result,1) wtofile = subwrd(result,2) wtoscale = woscale*toscale result = setname (woname,qoname,wofile,o) wqoname = subwrd(result,1) wqofile = subwrd(result,2) wqoscale = woscale*qoscale 'define uvoscale = 'uvoscale 'define vtoscale = 'vtoscale 'define vqoscale = 'vqoscale 'define wtoscale = 'wtoscale 'define wqoscale = 'wqoscale * Compute Zonal Means for Transient and Stationary Waves of CoVariance Fields * --------------------------------------------------------------------------- 'set dfile 'uofile 'getinfo undef' undef = result 'setlons' 'set lat -90 90' 'getdates' 'getinfo tmin' tmin = result 'getinfo tmax' tmax = result 'set t 'tmin 'getinfo date' begdateo = result 'set t 'tmax 'getinfo date' enddateo = result 'set time 'begdateo' 'enddateo 'set lev 'LEV 'makequad -U 'uoname' -V 'voname' -T 'toname' -Q 'qoname' -H 'honame' -W 'woname' -UV 'uvoname' -VT 'vtoname' -VQ 'vqoname' -WT 'wtoname' -WQ 'wqoname' -TAG o' if( uoname != 'NULL' & voname != 'NULL' ) 'define KEso = 0.5*( Var'uoname'so + Var'voname'so )' 'define KEpo = 0.5*( Var'uoname'po + Var'voname'po )' else 'define KEso = lat-lat+lon-lon+'undef 'define KEpo = lat-lat+lon-lon+'undef endif 'seasonal KEso' 'seasonal KEpo' 'seasonal Var'uoname'so' 'seasonal Var'voname'so' 'seasonal Var'toname'so' 'seasonal Var'qoname'so' 'seasonal Var'honame'so' 'seasonal Var'woname'so' 'seasonal Var'uoname'po' 'seasonal Var'voname'po' 'seasonal Var'toname'po' 'seasonal Var'qoname'po' 'seasonal Var'honame'po' 'seasonal Var'woname'po' 'seasonal Cov'uoname''voname'so' 'seasonal Cov'voname''toname'so' 'seasonal Cov'voname''qoname'so' 'seasonal Cov'woname''toname'so' 'seasonal Cov'woname''qoname'so' 'seasonal Cov'uoname''voname'po' 'seasonal Cov'voname''toname'po' 'seasonal Cov'voname''qoname'po' 'seasonal Cov'woname''toname'po' 'seasonal Cov'woname''qoname'po' 'undefine KEso' 'undefine KEpo' ******************************************************* **** Loop over Seasons to Process **** ******************************************************* m = 1 while( m > 0 ) season = subwrd(seasons,m) if( season = '' ) m = -1 else m = m+1 say 'Processing Season: 'season 'set dfile 'umfile 'count "'season'" 'begdate' 'enddate nmod = result 'set dfile 'uofile 'count "'season'"' nobs = result * Make Variance Plots * ------------------- VARSM = umname' 'vmname' 'tmname' 'qmname' 'wmname' 'hmname VARSO = uoname' 'voname' 'toname' 'qoname' 'woname' 'honame 'numargs 'VARSM nvars = result n = 1 while( n<=nvars ) varmname = subwrd( VARSM,n ) varoname = subwrd( VARSO,n ) if( varmname != 'NULL' & varoname != 'NULL' ) 'uppercase 'varmname varname = 'Var_'result 'set dfile 'umfile 'set lev 'LEV 'define qsqsm = sqrt(Var'varmname'sm'season')' 'define qpqpm = sqrt(Var'varmname'pm'season')' 'set dfile 'uofile 'set lev 'LEV 'define qsqso = sqrt(Var'varoname'so'season')' 'define qpqpo = sqrt(Var'varoname'po'season')' flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT 'varname' -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 's if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT 'varname' -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 'p if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile endif n = n+1 endwhile * Make KE Plots * ------------- 'set dfile 'umfile 'set lev 'LEV 'define qsqsm = KEsm'season 'define qpqpm = KEpm'season 'set dfile 'uofile 'set lev 'LEV 'define qsqso = KEso'season 'define qpqpo = KEpo'season flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT Var_KE -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 's if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT Var_KE -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 'p if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile * Make CoVariance Plots * --------------------- nvars = 1 COVARSM.nvars = umname' 'vmname ; nvars = nvars + 1 COVARSM.nvars = vmname' 'tmname ; nvars = nvars + 1 COVARSM.nvars = vmname' 'qmname ; nvars = nvars + 1 COVARSM.nvars = wmname' 'tmname ; nvars = nvars + 1 COVARSM.nvars = wmname' 'qmname ; nvars = nvars + 1 nvars = nvars - 1 nvars = 1 COVARSO.nvars = uoname' 'voname ; nvars = nvars + 1 COVARSO.nvars = voname' 'toname ; nvars = nvars + 1 COVARSO.nvars = voname' 'qoname ; nvars = nvars + 1 COVARSO.nvars = woname' 'toname ; nvars = nvars + 1 COVARSO.nvars = woname' 'qoname ; nvars = nvars + 1 nvars = nvars - 1 n = 1 while( n<=nvars ) varmname1 = subwrd( COVARSM.n,1 ) varmname2 = subwrd( COVARSM.n,2 ) varoname1 = subwrd( COVARSO.n,1 ) varoname2 = subwrd( COVARSO.n,2 ) 'uppercase 'varmname1 varname1 = result 'uppercase 'varmname2 varname2 = result cname = 'Cov_'varname1'_'varname2 'set dfile 'umfile 'set lev 'LEV 'define qsqsm = Cov'varmname1''varmname2'sm'season 'define qpqpm = Cov'varmname1''varmname2'pm'season 'set dfile 'uofile 'set lev 'LEV 'define qsqso = Cov'varoname1''varoname2'so'season 'define qpqpo = Cov'varoname1''varoname2'po'season flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT 'cname' -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 's if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile flag = "" while ( flag = "" ) 'run 'geosutil'/plots/quad/hplot -EXPID 'EXPID' -EXPORT 'cname' -SEASON 'season' -NMOD 'nmod' -NOBS 'nobs' -OUTPUT 'OUTPUT' -PFILE 'umfile' -OFILE 'uofile' -OBDATE 'begdateo' -OEDATE 'enddateo' -ODESC 'odesc' -ONAME 'obsid' -LEV 'LEV' -TYPE 'p if( DEBUG = "debug" ) say "Hit ENTER to repeat plot or non-blank to continue" pull flag else flag = "next" endif 'c' endwhile n = n+1 endwhile endif endwhile num = num + 1 endwhile return function setname (name1,name2,cfile,tag) flag = false if( name1 != 'NULL' & name2 != 'NULL' ) cname = 'Cov_'name1'_'name2 'lowercase 'cname lcname = result 'set dfile 'cfile 'query file' numvar = sublin(result,6) numvar = subwrd(numvar,5) m = 1 while ( m