#!/opt/canopy-1.3.0/Canopy_64bit/User/bin/python import numpy as np def compute_uneven_sigma(num_levels, N_scale_heights, surf_res, exponent, zero_top ): """ Construct an initial array of sigma based on the number of levels, an exponent Args: num_levels: the number of levels N_scale_heights: the number of scale heights to the top of the model (e.g scale_heights =12.5 ~102km assuming 8km scale height) surf_res: the resolution at the surface exponent: an exponent to increase th thickness of the levels zero_top: if True, force the top pressure boundary (in N=0) to 0 Pa Returns: b: an array of sigma layers """ b=np.zeros(int(num_levels)+1) for k in range(0,int(num_levels)): zeta = 1.-k/np.float_(num_levels) #zeta decreases with k z = surf_res*zeta + (1.0 - surf_res)*(zeta**exponent) b[k] = np.exp(-z*N_scale_heights) b[-1] = 1.0 if(zero_top): b[0] = 0.0 return b sig=compute_uneven_sigma(47, 10, 5, 1, 0 ) print(sig)