def recover_vmo_by_vo(model, DIR_in, DIR_out): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate # print model,DIR_in,DIR_out ncs = glob.glob(os.environ["MONDIR"] + model + "." + os.environ["vmo_var"] + ".mon*.nc") num_vmo_files = len(ncs) if num_vmo_files > 0: script = os.environ["SRCDIR"] + "split_vmo_into_yearly.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncs = glob.glob(os.environ["MONDIR"] + model + "." + os.environ["vmo_var"] + ".mon*.nc") else: script = os.environ["SRCDIR"] + "recover_vmo_by_vo.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncs = glob.glob(os.environ["MONDIR"] + model + "." + os.environ["vo_var"] + ".mon*.nc") for nc in ncs: ncl = os.environ["SRCDIR"] + sname + "_" + model + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) print("COMPUTING Volume Transport ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
def trans_wgt_TS_yearly(model): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate # print model,DIR_in,DIR_out script=os.environ["SRCDIR"]+"trans_wgt_TS_yearly.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncs = glob.glob(os.environ["OUTDIR"]+model+".trans_????-????.yr.nc") num_vmo_files=len(ncs) if num_vmo_files > 0: for nc in ncs: # print nc npos = nc.index('.yr.nc') yyyymm = nc[npos-9:npos] yyyy0 = yyyymm[0:4] yyyy1 = yyyymm[5:9] print yyyymm, yyyy0, yyyy1 ncl=os.environ["SRCDIR"]+sname+"_"+model+"_"+yyyymm+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) subprocess.call(["sed", "-i", "s#1850-1860#"+yyyy0+"-"+yyyy1+"#g", ncl]) subprocess.call(["sed", "-i", "s#year=1850#year="+yyyy0+"#g", ncl]) print("COMPUTING Yearly Mean from Monthly ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl)
def yearly_to_climate(model, DIR_in, DIR_out, fname, vname): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate script = os.environ["SRCDIR"] + "yearly_to_climate.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncs = glob.glob(os.environ["OUTDIR"] + model + "." + fname + "_????-????.yr.nc") num_vmo_files = len(ncs) if num_vmo_files > 0: ncl = os.environ["SRCDIR"] + sname + "_" + model + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#vmo_#" + fname + "_#g", ncl]) subprocess.call(["sed", "-i", "s#vmo.clim#" + fname + ".clim#g", ncl]) subprocess.call(["sed", "-i", "s#vmo#" + vname + "#g", ncl]) print("COMPUTING Yearly to Climate ... " + vname) execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
def interp_vit_to_viv_monthly(model, DIR_in, DIR_out): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate script = os.environ["SRCDIR"] + "interp_vit_to_viv_monthly.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncs = glob.glob(os.environ["MONDIR"] + model + "." + os.environ["so_var"] + ".mon.nc") base = os.path.splitext( os.path.basename( glob.glob(os.environ["OUTDIR"] + model + "." + os.environ["vmo_var"] + "_??????-??????.mon*.nc")[0]))[0] # print "base: "+base num_vmo_files = len(ncs) if num_vmo_files > 0: for nc in ncs: # print "nc: "+nc npos = base.index('.mon') yyyymm = nc[npos - 13:npos] yyyy0 = yyyymm[0:4] yyyy1 = yyyymm[7:11] print yyyymm, yyyy0, yyyy1 ncl = os.environ["SRCDIR"] + sname + "_" + model + ".ncl" shutil.copy(script, ncl) subprocess.call([ "sed", "-i", "s#CCSM4.vmo_185001-186012.mon#" + base + "#g", ncl ]) subprocess.call( ["sed", "-i", "s#185001-186012#" + yyyymm + "#g", ncl]) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call( ["sed", "-i", "s#yyyy0=1850#yyyy0=" + yyyy0 + "#g", ncl]) subprocess.call( ["sed", "-i", "s#yyyy1=1860#yyyy1=" + yyyy1 + "#g", ncl]) print("COMPUTING interpolation from T-grid to V-grid") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
def lat_extract(model,fname): ''' ---------------------------------------------------------------------- Note extract averaged latitudes along Atlantic basin ---------------------------------------------------------------------- ''' import os import shutil import subprocess from post_process import execute_ncl_calculate # print nc script=os.environ["SRCDIR"]+"lat_extract_"+fname+".ncl" ncl=os.environ["SRCDIR"]+"lat_extract_"+fname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Extracting Atlantic Latitude ...") execute_ncl_calculate(ncl) os.system("rm -f "+ncl)
def create_INDEX(model, DIR_out, fname): ''' ---------------------------------------------------------------------- Note 3D basin index ---------------------------------------------------------------------- ''' import os import shutil import subprocess from post_process import execute_ncl_calculate script = os.environ["SRCDIR"] + "create_INDEX.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncl = os.environ["SRCDIR"] + sname + "_" + fname + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#vo#" + fname + "#g", ncl]) print("COMPUTING 3D BASIN INDEX ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
def create_BASIN(model, DIR_out, fname): ''' ---------------------------------------------------------------------- Note surface basin index ---------------------------------------------------------------------- ''' import os import shutil import subprocess from post_process import execute_ncl_calculate script = os.environ["SRCDIR"] + "create_BASIN_step1.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncl = os.environ["SRCDIR"] + sname + "_" + fname + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#vo#" + fname + "#g", ncl]) print("Initializing Surface BASIN INDEX ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl) script = os.environ["SRCDIR"] + "create_BASIN_step3.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncl = os.environ["SRCDIR"] + sname + "_" + fname + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#vo#" + fname + "#g", ncl]) print("Finalizing Surface BASIN INDEX ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl) fp2 = open(os.environ["OUTDIR"] + model + ".BASIN_" + fname + "_step.txt", "r") num = fp2.readline()[0:-1] fp2.close() os.rename(DIR_out + model + ".BASIN_" + fname + "_step" + num + ".nc", DIR_out + model + ".BASIN_" + fname + ".fx.nc") os.system("rm -f " + DIR_out + model + ".BASIN_" + fname + "_step*.nc") os.system("rm -f " + DIR_out + model + ".BASIN_" + fname + "_step.txt")
def AMOC_T2B_from_climate(model, DIR_in, DIR_out): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate script = os.environ["SRCDIR"] + "AMOC_T2B_from_climate.ncl" sname = os.path.splitext(os.path.basename(script))[0] nc = os.environ["OUTDIR"] + model + "." + os.environ["vmo_var"] + ".clim.nc" if os.path.isfile(nc): ncl = os.environ["SRCDIR"] + sname + "_" + model + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) print("COMPUTING AMOCz") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
def trans_lats_monthly(model, DIR_in, DIR_out): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate ncs = glob.glob(os.environ["OUTDIR"] + model + "." + os.environ["vmo_var"] + "_??????-??????.mon*.nc") num_vmo_files = len(ncs) script = os.environ["SRCDIR"] + "trans_lats_monthly.ncl" sname = os.path.splitext(os.path.basename(script))[0] if num_vmo_files > 0: for nc in ncs: # print nc npos = nc.index('.mon.nc') yyyymm = nc[npos - 13:npos] yyyy0 = yyyymm[0:4] yyyy1 = yyyymm[7:11] print yyyymm, yyyy0, yyyy1 ncl = os.environ[ "SRCDIR"] + sname + "_" + model + "_" + yyyymm + ".ncl" shutil.copy(script, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call( ["sed", "-i", "s#185001-186012#" + yyyymm + "#g", ncl]) subprocess.call(["sed", "-i", "s#1850#" + yyyy0 + "#g", ncl]) print("Projecting vmo onto T/S plane ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)
import os import glob from post_process import convert_pdf2png_obs from post_process import execute_ncl_calculate if len(glob.glob(os.environ["REFDIR"] + "*.png")) == 18: print("Figures of reference exists. Copy them to " + os.environ["PNGREF"]) os.system("\cp " + os.environ["REFDIR"] + "*.png " + os.environ["PNGREF"]) exit() else: print("Ploting Figures of reference ...") # 26.5 script = os.environ["SRCDIR"] + "obs_Q_lat0_z_plot.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "obs_thetao_lat0_climate_xz_plot.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "obs_T_lat0_z_plot.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "obs_so_lat0_climate_xz_plot.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "obs_S_lat0_z_plot.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "ref_trans_lat0_climate_TS_plot.ncl" execute_ncl_calculate(script)
def single_ncl_test(model): ''' ---------------------------------------------------------------------- Note Volume Transport ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate #==================================================================================================== script=os.environ["SRCDIR"]+"AMOCS_S_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Stream Function on Salinity at 26.5 ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCT_T_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Stream Function on Temperature at 26.5 ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCr_r_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Stream Function on Density at 26.5 ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"Qavg_lats_y_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Qavg along y ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"Twgt_lats_y_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Twgt along y ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"Swgt_lats_y_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Swgt along y ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCz_yz_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("PLOTING AMOCz ..." + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCr_yr_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("PLOTING AMOCz ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCT_yT_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("PLOTING AMOCT ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"AMOCS_yS_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("PLOTING AMOCS ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"Q_lat0_z_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Q at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"S_lat0_z_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting S profile at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"T_lat0_z_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting T profile at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"thetao_lat0_climate_xz_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting T xz section at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"so_lat0_climate_xz_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting S xz section at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"vmo_lat0_climate_xz_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Q xz section at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"trans_lat0_climate_TS_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting Q(T,S) at "+os.environ["LAT0"]+" ... " + model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"MHT_lats_y_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting MHT along latitudes ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl) script=os.environ["SRCDIR"]+"MFWT_lats_y_plot.ncl" sname=os.path.splitext(os.path.basename(script))[0] ncl=os.environ["SRCDIR"]+sname+"_"+model+".ncl" shutil.copy(script,ncl) subprocess.call(["sed", "-i", "s#CCSM4#"+model+"#g", ncl]) print("Ploting MFWT along latitudes ... "+model) execute_ncl_calculate(ncl) os.system("rm -f "+ncl)
def get_dxdydz_LatLon(model, fname): ''' ---------------------------------------------------------------------- Note extract averaged latitudes along Atlantic basin ---------------------------------------------------------------------- ''' import os import glob import shutil import subprocess from post_process import execute_ncl_calculate print("Processing get_dxdydz_LatLon ...") dz4d = "" num0 = len( glob.glob(os.environ["MONDIR"] + model + "." + os.environ["thkcello_var"] + ".mon.nc")) if num0 == 1: dz4d = "True" num1 = len( glob.glob(os.environ["FIXDIR"] + model + "." + os.environ["thkcello_var"] + ".fx.nc")) if num1 == 1: dz4d = "False" nc = os.environ["FIXDIR"] + model + "." + os.environ[ "deptho_var"] + ".fx.nc" deptho = os.path.basename(nc) script = os.environ["SRCDIR"] + "get_dxdydz_LatLon.ncl" sname = os.path.splitext(os.path.basename(script))[0] ncl = os.environ["SRCDIR"] + sname + "_" + model + "_" + fname + ".ncl" shutil.copy(script, ncl) subprocess.call( ["sed", "-i", "s#CCSM4.deptho.fx.nc#" + deptho + "#g", ncl]) if dz4d == "True": nc = os.environ["MONDIR"] + model + "." + os.environ[ "thkcello_var"] + ".mon.nc" thkcello = os.path.basename(nc) subprocess.call( ["sed", "-i", "s#CCSM4.thkcello.fx.nc#" + thkcello + "#g", ncl]) subprocess.call([ "sed", "-i", "s#DIR_in3=getenv(\"FIXDIR\")#DIR_in3=getenv(\"MONDIR\")#g", ncl ]) fix = "True" elif dz4d == "False": nc = os.environ["FIXDIR"] + model + "." + os.environ[ "thkcello_var"] + ".fx.nc" thkcello = os.path.basename(nc) subprocess.call( ["sed", "-i", "s#CCSM4.thkcello.fx.nc#" + thkcello + "#g", ncl]) fix = "True" else: fix = "False" subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#dz4d=False#dz4d=" + dz4d + "#g", ncl]) subprocess.call(["sed", "-i", "s#_vo#_" + fname + "#g", ncl]) print("COMPUTING Grid Size ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl) if (fix == "True" and fname != "vo"): script2 = os.environ["SRCDIR"] + "interp_vit_to_viv_dxdydz.ncl" sname = os.path.splitext(os.path.basename(script2))[0] ncl = os.environ["SRCDIR"] + sname + "_" + model + "_" + fname + ".ncl" shutil.copy(script2, ncl) subprocess.call(["sed", "-i", "s#CCSM4#" + model + "#g", ncl]) subprocess.call(["sed", "-i", "s#vo#" + fname + "#g", ncl]) print("Interpolating T-grid to V-grid ...") execute_ncl_calculate(ncl) os.system("rm -f " + ncl)