function hcmp (args) EXPORT = subwrd(args,1) GC = subwrd(args,2) level = subwrd(args,3) expid = subwrd(args,4) output = subwrd(args,5) debug = subwrd(args,6) * Define Seasons to Process * ------------------------- seasons = '' k = 7 while( k > 0 ) season = subwrd(args,k) if( season = '' ) k = -1 else seasons = seasons % ' ' % season k = k+1 endif endwhile 'uppercase 'seasons seasons = result * Initialize * ---------- 'reinit' 'set display color white' 'set csmooth on' 'c' * Determine Variable Name and Data File * ------------------------------------- if ( EXPORT = "HE" ) 'getvar ZLE DYN' else 'getvar 'EXPORT' 'GC endif qname = subwrd(result,1) qfile = subwrd(result,2) scale = subwrd(result,3) expdsc = subwrd(result,4) * Return if EXPORT not found * -------------------------- if( qfile = "NULL" ) return endif * Get Environment Variables * ------------------------- 'getenv "GEOSUTIL"' geosutil = result 'getenv "VERIFICATION"' verification = result 'getenv "STD_DEV"' std_dev = result 'getenv "ANALYSIS"' analysis = result *PLOTS *----- * Set Default EXPORT Model and Observation Scaling Factors * -------------------------------------------------------- facm = 1 ; faco = 1 if( EXPORT = "U" ) ; facm = 1 ; faco = 1 ; endif if( EXPORT = "V" ) ; facm = 1 ; faco = 1 ; endif if( EXPORT = "T" ) ; facm = 1 ; faco = 1 ; endif if( EXPORT = "Q" ) ; facm = 1000 ; faco = 1000 ; endif if( EXPORT = "RH2" ) ; facm = 100 ; faco = 1 ; endif if( EXPORT = "SLP" ) ; facm = 0.01 ; faco = 0.01 ; endif if( EXPORT = "SLP" & level != 1000 ) ; return ; endif * Model Experiment Data * --------------------- 'set dfile 'qfile 'set lev 'level 'getinfo level' modlev = result 'setlons' 'getinfo lonmin' lonmin = result 'getinfo lonmax' lonmax = result 'set lat -90 90' * Create Environment Variables for Seasonal Utility * ------------------------------------------------- 'setdates' 'run getenv "BEGDATE"' begdate = result 'run getenv "ENDDATE"' enddate = result 'sett' 'alias ' qname alias = result 'chckname 'alias fact = facm if( EXPORT = "ZLE" & level < 300 ) ; fact = fact*0.001 ; endif if( EXPORT = "Q" & level < 400 ) ; fact = fact*1000 ; endif 'define mod = 'alias'*'fact'*'scale if( EXPORT = "HE" ) 'define mod = mod-ave(mod,lon='lonmin',lon='lonmax',-b)' endif 'q dims' say 'Model Environment:' say result 'seasonal mod' * Loop over Possible Experiment Datasets for Comparison * ----------------------------------------------------- '!/bin/mv HISTORY.T HISTORY.Tmp' 'getenv "CMPEXP"' cmpexp = result num = 1 exp = subwrd( cmpexp,num ) while( exp != 'NULL' ) say ' ' say 'Comparing with: 'exp 'run setenv "LEVTYPE" 'ALEVS '!/bin/cp 'exp'/HISTORY.rc .' '!cat HISTORY.rc | sed -e "s/,/ , /g" > HISTORY.T' if ( EXPORT = "HE" ) 'getvar ZLE DYN 'exp else 'getvar 'EXPORT' 'GC' 'exp endif oname = subwrd(result,1) obsfile = subwrd(result,2) oscale = subwrd(result,3) obsdsc = subwrd(result,4) obsnam = subwrd(result,5) 'set dfile 'obsfile 'set lev 'level 'getinfo level' obslev = result 'getdates' 'getinfo tmin' tmin = result 'getinfo tmax' tmax = result 'set t 'tmin 'getinfo date' begdateo = result 'set t 'tmax 'getinfo date' enddateo = result 'run setenv "BEGDATEO" 'begdateo 'run setenv "ENDDATEO" 'enddateo 'set time 'begdateo' 'enddateo 'define obs = 'oname'*'oscale'*'fact if( EXPORT = "HE" ) ; 'define obs = (obs-ave(obs,lon='lonmin',lon='lonmax',-b))' ; endif 'q dims' say 'OBS Environment:' say result 'seasonal obs' 'getenv "CLIMATE"' climate = result anafile = obsfile anadsc = obsdsc ananam = obsnam k = 1 while( k > 0 ) season = subwrd(seasons,k) if( season = '' ) k = -1 else k = k+1 'set dfile 'qfile 'count "'season'" 'begdate' 'enddate nmod = result 'set dfile 'anafile 'count "'season'"' nobs = result 'define obs'season' = obs'season if( std_dev = 'true' ) ; 'define obs'season'std = obs'season'std' ; endif 'run setenv "CLIMATE" 'climate flag = "" while ( flag = "" ) 'run 'geosutil'/plots/hcmp/hplt 'expid' 'EXPORT' 'season' 'output' 'level' 'nmod' 'nobs' 'anafile' 'ananam' 'anadsc' 'debug' 'expdsc if( debug = "debug" ) say "Hit ENTER to repeat plot" say "Type 'next' for next plot, 'done' for next field" pull flag else flag = "next" endif endwhile 'c' endif endwhile * Check next Comparison Experiment Dataset * ---------------------------------------- num = num + 1 exp = subwrd( cmpexp,num ) endwhile '!/bin/mv HISTORY.Tmp HISTORY.T' * Loop over Possible Verification Datasets for Comparison * ------------------------------------------------------- fact = faco if( EXPORT = "ZLE" & level < 300 ) ; fact = fact*0.001 ; endif if( EXPORT = "Q" & level < 400 ) ; fact = fact*1000 ; endif ' getnumrc 'geosutil'/plots/hcmp' rcinfo = result numrc = subwrd( rcinfo,1 ) num = 1 cnt = 0 while( num <= numrc ) loc = num + 1 rcfile = subwrd( rcinfo,loc ) OBS = EXPORT if( EXPORT = "HE" ) ; OBS = "ZLE" ; endif 'getobs 'OBS' 'GC' 'rcfile oname = subwrd(result,1) obsfile = subwrd(result,2) oscale = subwrd(result,3) obsdsc = subwrd(result,4) obsnam = subwrd(result,5) if( analysis != "false" ) 'run setenv "LEVTYPE" 'ALEVS else 'run setenv "LEVTYPE" 'DLEVS endif * Perform PLOT for valid OBS * -------------------------- if( oname != 'NULL' ) cnt = cnt + 1 'set dfile 'obsfile 'set lev 'level 'getinfo level' obslev = result 'getlevs 'oname nobslev = result * Check for Valid OBS Level * ------------------------- if( obslev = modlev | nobslev = 1 ) 'getdates' 'getinfo tmin' tmin = result 'getinfo tmax' tmax = result 'set t 'tmin 'getinfo date' begdateo = result 'set t 'tmax 'getinfo date' enddateo = result 'run setenv "BEGDATEO" 'begdateo 'run setenv "ENDDATEO" 'enddateo 'set time 'begdateo' 'enddateo 'define obs'cnt' = 'oname'*'oscale'*'fact if( EXPORT = "HE" ) ; 'define obs'cnt' = (obs'cnt'-ave(obs'cnt',lon='lonmin',lon='lonmax',-b))' ; endif 'q dims' say 'OBS'cnt' Environment:' say result 'seasonal obs'cnt 'getenv "CLIMATE"' climate = result anaindx = cnt anafile = obsfile anadsc = obsdsc ananam = obsnam k = 1 while( k > 0 ) season = subwrd(seasons,k) if( season = '' ) k = -1 else k = k+1 'set dfile 'qfile 'count "'season'" 'begdate' 'enddate nmod = result 'set dfile 'anafile 'count "'season'"' nobs = result 'define obs'season' = obs'anaindx''season if( std_dev = 'true' ) ; 'define obs'season'std = obs'anaindx''season'std' ; endif 'run setenv "CLIMATE" 'climate flag = "" while ( flag = "" ) 'run 'geosutil'/plots/hcmp/hplt 'expid' 'EXPORT' 'season' 'output' 'level' 'nmod' 'nobs' 'anafile' 'ananam' 'anadsc' 'debug' 'expdsc if( debug = "debug" ) say "Hit ENTER to repeat plot" say "Type 'next' for next plot, 'done' for next field" pull flag else flag = "next" endif endwhile 'c' endif endwhile * End check for valid Level within OBS * ------------------------------------ else say "Level "modlev" not found in Verification!" endif * End check for valid OBS * ----------------------- endif * Check next Verification Dataset * ------------------------------- num = num + 1 endwhile return