// condense_sec3d.i: Condense 3 deg. sector ocean data // Case name case_name= "C1.03"; // Starting years for consolidated archives // (the last year on the list need not have data associated with it) yearlist= [0, 2000]; // Retention period in days (for MSS output files) rtpd= 1100; // Sequence file size (years) seq_size= 100; // Input/output user names inuser= "GOKHAN"; outuser= "SVN"; // Input directory name indir= "SECTOROCEAN/3DEG25L/"+case_name+"/NETCDF/TIMEAV"; // Output directory name outdir= "runs/coam/"+case_name+"/NCDF"; // Temporary directory ///tmpdir= "/tmp/svn"; tmpdir= get_env("TMPDIR"); if (strlen(tmpdir) == 0) tmpdir="."; write, "TMPDIR="+tmpdir; // Directory prefixes inprefix= inuser+"/"+indir; outprefix= outuser+"/"+outdir; // Temporary disk directories for input/output files oscommand, "mkdir -p "+tmpdir+"/"+inprefix; oscommand, "mkdir -p "+tmpdir+"/"+outprefix; for (iperiod=1; iperiod <= numberof(yearlist)-1; iperiod++) { // Staring/ending years startyear= yearlist(iperiod); endyear= yearlist(iperiod+1)-1; nyears= endyear-startyear+1; if ( ((startyear % seq_size) != 0) || ((nyears % seq_size) != 0) ) error, "Cannot read incomplete sequence files"; // No. of sequence files, starting sequence number nseq= nyears/seq_size; startseq= startyear/seq_size; // Output file name outfile= "ocn"+strnum(startyear)+"-"+strnum(endyear)+".nc"; // List of sequence filenames dfile= array(string,nseq); pfile= array(string,nseq); for (iseq=1; iseq <= nseq; iseq++) { prefix= "Y"+strmid(strnum(10000+(startseq+iseq-1)*seq_size+1,format="%5d"),1,4)+"_"+ strmid(strnum(10000+(startseq+iseq)*seq_size,format="%5d"),1,4); dfile(iseq)= prefix+"_d.nc"; pfile(iseq)= prefix+"_p.nc"; } // cd to temporary working directory cd, tmpdir; // Pre-read history files from MSS oscommand, "msreadlist "+strcombine(inprefix+"/"+dfile(*)," "); oscommand, "msreadlist "+strcombine(inprefix+"/"+pfile(*)," "); outstruc= NULL; for (iseq=1; iseq <= nseq; iseq++) { // Open diagnostics file hopen, inprefix+"/"+dfile(iseq), scratch=0; // Read Y-Z fields VARYZ= hget(["tmt","tmtiso"]); // Close diagnostics file hclose; // Open prognostics file hopen, inprefix+"/"+pfile(iseq), scratch=0; TEMVAR= hget(["T","S","A","V"],x=262.); TEMVAR.name= TEMVAR.name + "262E"; grow, VARYZ, TEMVAR; TEMVAR= hget(["T","S","A","U"],x=282.); TEMVAR.name= TEMVAR.name + "282E"; grow, VARYZ, TEMVAR; TEMVAR= hget(["T","S","A"],x=312.); TEMVAR.name= TEMVAR.name + "312E"; grow, VARYZ, TEMVAR; // Read X-Y fields VARXY= hget(["psi","smfx","smfy","Tflx","Sflx"]); TEMVAR= hget(["T","S"],z=1,subscript=1); TEMVAR.name= "SS" + TEMVAR.name; grow, VARXY, TEMVAR; TEMVAR= hget(["T","S","A","W"],z=300.); TEMVAR.name= TEMVAR.name + "300M"; grow, VARXY, TEMVAR; TEMVAR= hget(["T","S","A","W"],z=1500.); TEMVAR.name= TEMVAR.name + "1500M"; grow, VARXY, TEMVAR; TEMVAR= hget(["A"],z=4500.); TEMVAR.name= TEMVAR.name + "4500M"; grow, VARXY, TEMVAR; // Read X-Z fields VARXZ= NULL; TEMVAR= hget(["T","S","A","V"],y=60.); TEMVAR.name= TEMVAR.name + "60N"; grow, VARXZ, TEMVAR; TEMVAR= hget(["T","S","A","V"],y=48.); TEMVAR.name= TEMVAR.name + "48N"; grow, VARXZ, TEMVAR; TEMVAR= hget(["A","V"],y=35.); TEMVAR.name= TEMVAR.name + "35N"; grow, VARXZ, TEMVAR; TEMVAR= hget(["T","S","A","V"],y=0.); TEMVAR.name= TEMVAR.name + "EQ"; grow, VARXZ, TEMVAR; TEMVAR= hget(["T","S","A","V"],y=-48.); TEMVAR.name= TEMVAR.name + "48S"; grow, VARXZ, TEMVAR; // Read X-averaged fields XAV= hget(["T","S","A"],x="avg"); XAV.name= XAV.name + "_XAV"; // Close prognostics file hclose; // Save/append to output file happend, outstruc, create=outprefix+"/"+outfile, VARYZ, VARXY, VARXZ, XAV; } // Close output file and save to mass store hclose, outstruc, command="cd "+tmpdir+"/"+outuser+"; mssput -rtpd "+strnum(rtpd)+" "+outdir+"/"+outfile; write, "Output file /"+outprefix+"/"+outfile+" saved to mass store"; } //quit