def plot_sim_reflect():
    print("    SIM REFLECTIVITY")
    # Set Figure Size (1000 x 800)
    plt.figure(figsize=(width, height), frameon=False)
    QR = nc.variables['QRAIN']
    try:
        QS = nc.variables['QSNOW']
    except:
        QS = np.zeros(np.shape(QR))
        # Define 'constant' densities (kg m-3)
        rhor = 1000
    rhos = 100
    rhog = 400
    rhoi = 917

    # Define "fixed intercepts" (m-4)
    Norain = 8.0E6
    #Nosnow = 2.0E7
    Nosnow = 2.0E6 * np.exp(-0.12 * (temps[time] - 273))
    Nograu = 4.0E6

    # First, find the density at the first sigma level
    # above the surface
    density = np.divide(psfc[time], (287.0 * temps[time]))
    #print "Rho: ", np.mean(density)
    Qra = QR[time, 1]
    Qsn = QS[time, 1]
    Qra = np.nan_to_num(Qra)
    Qsn = np.nan_to_num(Qsn)

    # Calculate slope factor lambda
    lambr = np.divide((3.14159 * Norain * rhor), np.multiply(density, Qra))
    lambr = lambr**0.25

    #lambs = np.divide((3.14159 * Nosnow * rhoi), np.multiply(density, Qsn))
    #lambs = lambs ** 0.25
    lambs = np.exp(-0.0536 * (temps[time] - 273))

    # Calculate equivalent reflectivity factor
    Zer = (720.0 * Norain * (lambr**-7.0)) * 1E18
    Zes = (0.224 * 720.0 * Nosnow * (lambr**-7.0) * (rhos / rhoi)**2) * 1E18
    Zes_int = np.divide((lambs * Qsn * density), Nosnow)
    Zes = ((0.224 * 720 * 1E18) / (3.14159 * rhor)**2) * Zes_int**2

    Ze = np.add(Zer, Zes)
    #Ze = Zer
    # Convert to dBZ

    dBZ = 10 * np.log10(Ze)
    dBZ = np.nan_to_num(dBZ)
    units = 'dBZe'
    print "      MAX: ", np.max(dBZ)
    # Now plot
    REF_LEVELS = range(5, 90, 5)
    SREFLECT = plt.contourf(x, y, dBZ, REF_LEVELS, cmap=coltbls.reflect_ncdc())
    #SREFLECT=plt.contourf(x,y,dBZ)
    title = 'Simulated Surface Reflectivity'
    prodid = 'sref'

    drawmap(SREFLECT, title, prodid, units)
def plot_comp_reflect():
    print("    COMP REFLECTIVITY")
    # Set Figure Size (1000 x 800)
    plt.figure(figsize=(width,height),frameon=False)
    QR = nc.variables['QRAIN']
    try:
        QS = nc.variables['QSNOW']
    except:
        QS = np.zeros(np.shape(QR))

    # Define 'constant' densities (kg m-3)
    rhor = 1000
    rhos = 100
    rhog = 400
    rhoi = 917

    # Define "fixed intercepts" (m-4)
    Norain = 8.0E6
    #Nosnow = 2.0E7
    Nosnow = 2.0E6*np.exp(-0.12 * (temps[time]-273))
    Nograu = 4.0E6


    # First, find the density at the first sigma level
    # above the surface
    density = np.divide(psfc[time],(287.0 * temps[time]))
    #print "Rho: ", np.mean(density)
    Qra_all = QR[time]
    Qsn_all = QS[time]

    for j in range(len(Qra_all[1,:,1])):
		curcol_r = []
		curcol_s = []
		for i in range(len(Qra_all[1,1,:])):
				maxrval = np.max(Qra_all[:,j,i])
				maxsval = np.max(Qsn_all[:,j,i])
				curcol_r.append(maxrval)		
				curcol_s.append(maxsval)
		np_curcol_r = np.array(curcol_r)
		np_curcol_s = np.array(curcol_s)
		if j == 0:
			Qra = np_curcol_r
			Qsn = np_curcol_s
		else:
			Qra = np.row_stack((Qra, np_curcol_r))
			Qsn = np.row_stack((Qsn, np_curcol_s))

    #print "Qra shp: ", np.shape(Qra)
    #print "Den shp: ", np.shape(density)
	


    # Calculate slope factor lambda
    lambr = np.divide((3.14159 * Norain * rhor), np.multiply(density, Qra))
    lambr = lambr ** 0.25

    #lambs = np.divide((3.14159 * Nosnow * rhoi), np.multiply(density, Qsn))
    #lambs = lambs ** 0.25
    lambs = np.exp(-0.0536 * (temps[time] - 273))
	
    # Calculate equivalent reflectivity factor
    Zer = (720.0 * Norain * (lambr ** -7.0)) * 1E18
    Zes = (0.224 * 720.0 * Nosnow * (lambr ** -7.0) * (rhos/rhoi) ** 2) * 1E18
    Zes_int = np.divide((lambs * Qsn * density), Nosnow)
    Zes = ((0.224 * 720 * 1E18) / (3.14159 * rhor) ** 2) * Zes_int ** 2 



    Ze = np.add(Zer, Zes)
    #Ze = Zer
    # Convert to dBZ
    dBZ = 10 * np.log10(Ze)	
    dBZ = np.nan_to_num(dBZ)
    units = 'dBZe'
    print "      MAX: ", np.max(dBZ)
    # Now plot
    REF_LEVELS = range(5,90,5)
    CREFLECT=plt.contourf(x,y,dBZ,REF_LEVELS,cmap=coltbls.reflect_ncdc())
    #SREFLECT=plt.contourf(x,y,dBZ)
    title = 'Simulated Composite Reflectivity'
    prodid = 'cref'

    drawmap(CREFLECT, title, prodid, units) 	
def plot_sim_reflect():
    print("    SIM REFLECTIVITY")
    # Set Figure Size (1000 x 800)
    plt.figure(figsize=(width,height),frameon=False)
    QR = nc.variables['QRAIN']
    try:
        QS = nc.variables['QSNOW']
    except:
        QS = np.zeros(np.shape(QR))
    # Define 'constant' densities (kg m-3)
	rhor = 1000
    rhos = 100
    rhog = 400
    rhoi = 917

    # Define "fixed intercepts" (m-4)
    Norain = 8.0E6
    #Nosnow = 2.0E7
    Nosnow = 2.0E6*np.exp(-0.12 * (temps[time]-273))
    Nograu = 4.0E6


    # First, find the density at the first sigma level
    # above the surface
    density = np.divide(psfc[time],(287.0 * temps[time]))
    #print "Rho: ", np.mean(density)
    Qra = QR[time,1]
    Qsn = QS[time,1]
    Qra = np.nan_to_num(Qra)
    Qsn = np.nan_to_num(Qsn)

    # Calculate slope factor lambda
    lambr = np.divide((3.14159 * Norain * rhor), np.multiply(density, Qra))
    lambr = lambr ** 0.25

    #lambs = np.divide((3.14159 * Nosnow * rhoi), np.multiply(density, Qsn))
    #lambs = lambs ** 0.25
    lambs = np.exp(-0.0536 * (temps[time] - 273))
	
    # Calculate equivalent reflectivity factor
    Zer = (720.0 * Norain * (lambr ** -7.0)) * 1E18
    Zes = (0.224 * 720.0 * Nosnow * (lambr ** -7.0) * (rhos/rhoi) ** 2) * 1E18
    Zes_int = np.divide((lambs * Qsn * density), Nosnow)
    Zes = ((0.224 * 720 * 1E18) / (3.14159 * rhor) ** 2) * Zes_int ** 2 



    Ze = np.add(Zer, Zes)
    #Ze = Zer
    # Convert to dBZ
    
    dBZ = 10 * np.log10(Ze)	
    dBZ = np.nan_to_num(dBZ)
    units = 'dBZe'
    print "      MAX: ", np.max(dBZ)
    # Now plot
    REF_LEVELS = range(5,90,5)
    SREFLECT=plt.contourf(x,y,dBZ,REF_LEVELS,cmap=coltbls.reflect_ncdc())
    #SREFLECT=plt.contourf(x,y,dBZ)
    title = 'Simulated Surface Reflectivity'
    prodid = 'sref'

    drawmap(SREFLECT, title, prodid, units) 	
def plot_comp_reflect():
    print("    COMP REFLECTIVITY")
    # Set Figure Size (1000 x 800)
    plt.figure(figsize=(width, height), frameon=False)
    QR = nc.variables['QRAIN']
    try:
        QS = nc.variables['QSNOW']
    except:
        QS = np.zeros(np.shape(QR))

    # Define 'constant' densities (kg m-3)
    rhor = 1000
    rhos = 100
    rhog = 400
    rhoi = 917

    # Define "fixed intercepts" (m-4)
    Norain = 8.0E6
    #Nosnow = 2.0E7
    Nosnow = 2.0E6 * np.exp(-0.12 * (temps[time] - 273))
    Nograu = 4.0E6

    # First, find the density at the first sigma level
    # above the surface
    density = np.divide(psfc[time], (287.0 * temps[time]))
    #print "Rho: ", np.mean(density)
    Qra_all = QR[time]
    Qsn_all = QS[time]

    for j in range(len(Qra_all[1, :, 1])):
        curcol_r = []
        curcol_s = []
        for i in range(len(Qra_all[1, 1, :])):
            maxrval = np.max(Qra_all[:, j, i])
            maxsval = np.max(Qsn_all[:, j, i])
            curcol_r.append(maxrval)
            curcol_s.append(maxsval)
        np_curcol_r = np.array(curcol_r)
        np_curcol_s = np.array(curcol_s)
        if j == 0:
            Qra = np_curcol_r
            Qsn = np_curcol_s
        else:
            Qra = np.row_stack((Qra, np_curcol_r))
            Qsn = np.row_stack((Qsn, np_curcol_s))

    #print "Qra shp: ", np.shape(Qra)
    #print "Den shp: ", np.shape(density)

    # Calculate slope factor lambda
    lambr = np.divide((3.14159 * Norain * rhor), np.multiply(density, Qra))
    lambr = lambr**0.25

    #lambs = np.divide((3.14159 * Nosnow * rhoi), np.multiply(density, Qsn))
    #lambs = lambs ** 0.25
    lambs = np.exp(-0.0536 * (temps[time] - 273))

    # Calculate equivalent reflectivity factor
    Zer = (720.0 * Norain * (lambr**-7.0)) * 1E18
    Zes = (0.224 * 720.0 * Nosnow * (lambr**-7.0) * (rhos / rhoi)**2) * 1E18
    Zes_int = np.divide((lambs * Qsn * density), Nosnow)
    Zes = ((0.224 * 720 * 1E18) / (3.14159 * rhor)**2) * Zes_int**2

    Ze = np.add(Zer, Zes)
    #Ze = Zer
    # Convert to dBZ
    dBZ = 10 * np.log10(Ze)
    dBZ = np.nan_to_num(dBZ)
    units = 'dBZe'
    print "      MAX: ", np.max(dBZ)
    # Now plot
    REF_LEVELS = range(5, 90, 5)
    CREFLECT = plt.contourf(x, y, dBZ, REF_LEVELS, cmap=coltbls.reflect_ncdc())
    #SREFLECT=plt.contourf(x,y,dBZ)
    title = 'Simulated Composite Reflectivity'
    prodid = 'cref'

    drawmap(CREFLECT, title, prodid, units)