def __init__(self, file, subfolder, folder = '/home/aholaj/mounttauskansiot/voimahomemount/UCLALES-SALSA/' ): self.folder=folder self.file = file self.subfolder = subfolder #file = 'sound_in_DYCOMSIIRF02' #file = 'sound_in' filu = self.folder + "/" + self.subfolder + "/" + self.file f = open(filu, 'r') self.z = [] self.t = [] self.q = [] self.u = [] self.v = [] for line in f: zA, tA, qA, uA, vA = line.split() self.z.append(float(zA)) self.t.append(float(tA)) self.q.append(float(qA)) self.u.append(float(uA)) self.v.append(float(vA)) f.close() self.zu = np.column_stack(( self.z, self.u )) self.zv = np.column_stack(( self.z, self.v )) self.rh, self.ps = calc_rh_profile( self.t, np.multiply(np.asarray(self.q), 1.e-3), self.z ) self.z[0]=0.
def write_sound_in(input_vector): # input_vector = pres0[0], windprofile[1], case[2], q_inv[3], tpot_inv[4], q_pbl[5], tpot_pbl[6], pblh[7], dz[8], nzp[9] pres0 = float(input_vector[0]) windprofile = input_vector[1] case = str(input_vector[2]) q_inv = float(input_vector[3]) tpot_inv = float(input_vector[4]) q_pbl = float(input_vector[5]) tpot_pbl = float(input_vector[6]) pblh = float(input_vector[7]) dz = float(input_vector[8]) nzp = int(input_vector[9]) folder = rootfolder + 'emul' + case + '/' call(['mkdir', '-p', folder]) filename = 'sound_in' #+case # print filename filu = folder + filename f = open(filu, 'w') #z = [ 100., 200., 500.,790.,795.,800.,850.,900.,950.,1000.,1050.,1100.,1150.,1200.,1250.,1300.,1350.,1400.,1450.,1500.,1550.,1600.,1650.,1700.,1750.,1800.,1850.,1900.,1950.,2000.] # print row z = define_z(pblh, dz, nzp) print('case ' + str(case)) print('deltaz ' + str(dz)) print('korkeus ' + str(z[-1])) print('pblh ' + str(round(pblh, 2))) print('nzp ' + str(nzp)) print('tpot_pbl ' + str(round(tpot_pbl, 2))) print('tpot_inv ' + str(round(tpot_inv, 2))) print('q_pbl ' + str(round(q_pbl, 2))) print('q_inv ' + str(round(q_inv, 2))) #print('num_pbl ' + str(round(num_pbl,2))) z[0] = pres0 potTemp = [tpot_pbl] wc = [q_pbl] u = [0.] v = [0.] # invThi = 50. t_grad = 0.3 invThi = thickness(tpot_inv, t_grad) print('inversion thickness ' + str(round(invThi, 2))) print(" ") for k in range(1, len(z)): # potTemp.append( pot_temp_IT( z[k], pblh, tpot_pbl, tpot_inv, invThi ) ) # wc.append( tot_wat_mix_rat_IT( z[k], pblh, q_pbl, q_inv, invThi, q_toa = min( max( q_pbl-q_inv-0.01, 0.01) , 2. ) ) ) potTemp.append( pot_temp_LIN(z[k], pblh, tpot_pbl, tpot_inv, t_grad, invThi, dtdzFT=0.003)) wc.append(tot_wat_mix_rat_LIN(z[k], pblh, q_pbl, q_inv, invThi)) if (windprofile == 'zero'): u_apu, v_apu = wind_0(z[k]) elif (windprofile == 'ascos'): u_apu, v_apu = wind_ascos(z[k]) elif (windprofile == 'dycoms'): u_apu, v_apu = wind_dycoms(z[k]) elif (windprofile == 'ideal'): u_apu, v_apu = wind_ideal(z[k]) u.append(u_apu) v.append(v_apu) if (windprofile == 'zero'): u_apu, v_apu = wind_0(0.) elif (windprofile == 'ascos'): u_apu, v_apu = wind_ascos(0.) elif (windprofile == 'dycoms'): u_apu, v_apu = wind_dycoms(0.) elif (windprofile == 'ideal'): u_apu, v_apu = wind_ideal(0.) u[0] = u_apu v[0] = v_apu # for k in xrange(len(z)): # print z[k], potTemp[k] # print 'lev '+ str(lev)+' theta '+ str(potTemp(lev))+ ' wc ' + str(wc(lev)) + ' u ' + str(u(lev)) + ' v ' + str(v(lev)) rh, pressL = calc_rh_profile(potTemp, np.multiply(np.asarray(wc), 0.001), z) #drop, cloudwater = calc_cloud_droplet_diam( potTemp, np.multiply(np.asarray(wc), 0.001), pressL, num_pbl*1e6) drawing #cloudwater = np.multiply(cloudwater,1000.) wind = calcWind(u, v) windshear = calcWindShear(u, v, z) # if you want to modify water content use the two following commands # rh, wc2 = calc_rh_profile( potTemp, np.multiply(np.asarray(wc), 0.001), z, True ) # wc = np.multiply(wc,1000.)[7] # write to sound_in for k in range(len(z)): row= ' {0:15f} {1:15.6f} {2:15.6f} {3:15.6f} {4:15.6f}\n'.format( \ z[k], \ potTemp[k], \ wc[k], \ u[k], \ v[k] ) f.write(row) f.close() # plotting if mounted if (mounted): print("Plotataan case " + str(case)) print(" ") LEGEND = False markers = True z[0] = 0. initializeColors(7) plottaa(potTemp, z, tit=case + ' liq. pot. temp., pblh: ' + str(round(pblh, 2)) + ' [m] invThi.: ' + str(round(invThi, 2)) + ' [m]', xl='liquid potential temperature [K]', yl='height [m]', markers=markers, uusikuva=True, LEGEND=LEGEND) plt.axhline(y=pblh) # plt.axhline( y = pblh + invThi ) # plt.plot([tpot_pbl,tpot_pbl+tpot_inv], [pblh,pblh+invThi], color='r', marker='o') # plt.ylim( [pblh-1.*dz, pblh + invThi+1*dz]) # # ax.set_yticks(z) # # ax.set_yticks([pblh, pblh+invThi], minor=True) plt.savefig(folder + case + '_0_' + 'liquid_potential_temperature' + '.png', bbox_inches='tight') plt.close() plottaa(wc, z, tit=case + ' ' + r'$H_{2}$' + ' mix. rat., pblh: ' + str(round(pblh, 2)) + ' [m] invThi.: ' + str(round(invThi, 2)) + ' [m]', xl='water mixing ratio [g/kg]', yl='height [m]', markers=markers, uusikuva=True, LEGEND=LEGEND) plt.axhline(y=pblh) # plt.axhline( y = pblh + invThi ) # plt.plot([q_pbl,q_pbl-q_inv], [pblh,pblh+invThi], color='r', marker='o') # plt.ylim( [pblh-1.*dz, pblh + invThi+1*dz]) plt.savefig(folder + case + '_0_' + 'water_mixing_ratio' + '.png', bbox_inches='tight') plt.close() plottaa(rh, z, tit=case + ' relative humidity', xl='relative humidity [%]', yl='height [m]', markers=markers, uusikuva=True, LEGEND=LEGEND) plt.savefig(folder + case + '_' + 'relative_humidity' + '.png', bbox_inches='tight') plt.close() # plottaa( drop, z, tit = case+' cloud droplet diameter', xl = r'diameter [$\mu$]', yl = 'height [m]', markers=markers, uusikuva = True, LEGEND = LEGEND ) # plt.savefig( folder + case + '_'+ 'cloud_droplet_diameter' + '.png', bbox_inches='tight') # plt.close() # plottaa( cloudwater, z, tit = case+' cloud water mixing ratio', xl = 'cloud water mixing ratio [g/kg]', yl = 'height [m]', markers=markers, uusikuva = True, LEGEND = LEGEND ) # plt.savefig( folder + case + '_'+ 'cloud_water_mixing_ratio' + '.png', bbox_inches='tight') # plt.close() plottaa(wind, z, tit=case + ' wind ' + windprofile, xl='wind [m/s]', yl='height [m]', markers=markers, uusikuva=True, LEGEND=LEGEND) plt.savefig(folder + case + '_' + 'wind' + '.png', bbox_inches='tight') plt.close() plottaa(windshear, z[:-1], tit=case + ' wind shear ' + windprofile, xl='wind shear ' + r'[$s^{-1}$]', yl='height [m]', markers=markers, uusikuva=True, LEGEND=LEGEND) plt.savefig(folder + case + '_' + 'windshear' + '.png', bbox_inches='tight') plt.close() else: print('Not plotting initial conditions') return True
qq_modaa = np.multiply(qq_modaa, 1.e-3) rh_temp = 100000. * np.ones(size) point = 0 for i in range(point + 1): #size k = 1 incr = 1.e-6 #1.e-6 incr = incr * 1.e-3 etumerkki = 1. print('z', i) vanha = np.abs(rh_temp[i] - rh_mod[i]) while ((vanha > 0.01) or (k < 3)): qq_modaa[i] = np.max(qq_modaa[i] - etumerkki * k * incr, 0) rh_temp, b = calc_rh_profile(t, qq_modaa, z) uusi = np.abs(rh_temp[i] - rh_mod[i]) # if uusi-vanha > 0: # #print 'switch' # etumerkki = -1*etumerkki vanha = uusi k = k + 1 print(uusi, rh_temp[i], rh_mod[i]) #q_mod_part[i] = q[i]-k*incr print('q[i]', q[i], 'qq_modaa[i]', qq_modaa[i] * 1.e+3) #q_mod = np.concatenate( ( q_mod_part,q[size:] ) ) q_mod = np.zeros(size)