def getAtmAttPantra(cloudNetFilePath, radarFreqs): cloudNetData = netCDF4.Dataset(cloudNetFilePath, 'r') height_M = cloudNetData[ 'model_height'][:] - 105 # added -105[m] here to Joses original file since the cloudnet mocel_height start at msl and radar data is at 105 above msl temp = cloudNetData['temperature'][:] #[k] speHum = cloudNetData['specific_humidity'][:] #[kg/kg] press = cloudNetData['pressure'][:] #[Pa] time = cloudNetData['time'][:] #[hour fraction] att_atm_cloud = cloudNetData['radar_gas_atten'][:] #[dB] att_liq_cloud = cloudNetData['radar_liquid_atten'][:] #[dB] relHum = atmFunc.speHumi2RelHum(speHum, temp, press) #[%] vaporPress = atmFunc.calcVaporPress(speHum, temp, press) #[Pa] (!! variable name) waterVaporDens = atmFunc.calcVaporDens(vaporPress, temp) #[kg/m^3] dryAirDens = atmFunc.calcDryAirDens(press, waterVaporDens, temp) #[kg/m^3] descriptorFile = getDescriptor() pam = pyPamtra.pyPamtra() for hyd in descriptorFile: pam.df.addHydrometeor(hyd) pam.nmlSet['active'] = True pam.nmlSet['passive'] = False pam.nmlSet["radar_attenuation"] = 'bottom-up' pamData = dict() heightArr = np.zeros((len(time), len(height_M))) + height_M pamData['hgt'] = heightArr pamData['temp'] = temp pamData['relhum'] = relHum pamData['press'] = press pam.createProfile(**pamData) pam.runParallelPamtra(radarFreqs, pp_deltaX=1, pp_deltaY=1, pp_deltaF=1, pp_local_workers=8) return pam.r, time, height_M, temp, relHum, press
from __future__ import print_function import pyPamtra from copy import deepcopy import matplotlib.pyplot as plt import numpy as np fig1 = plt.figure() for miscalibration in [-10, -5, 0, 5, 10]: pam = pyPamtra.pyPamtra() #!name as_ratio liq_ice rho_ms a_ms b_ms alpha beta moment_in nbin dist_name p_1 p_2 p_3 p_4 d_1 d_2 scat_name vel_size_mod canting pam.df.addHydrometeor( ('ice', 1.0, -1, 200, -99, -99, np.pi / 4., 2, 0, 100, 'exp', 3000, 3e8, -99.0, -99.0, 100e-6, 1000e-6, 'mie-sphere', 'heymsfield10_particles', 0.0)) pam = pyPamtra.importer.createUsStandardProfile(pam, hgt_lev=np.arange( 1000, 1300, 200)) pam.p["airturb"][:] = 0.2 freqs = [35.5] #,80,150] pam.set["verbose"] = 0 pam.set["pyVerbose"] = 0 pam.nmlSet["randomseed"] = 10 pam.nmlSet["radar_mode"] = "spectrum" pam.nmlSet["radar_aliasing_nyquist_interv"] = 3 pam.nmlSet["hydro_adaptive_grid"] = False pam.nmlSet["radar_receiver_miscalibration"] = miscalibration
import pyPamtra import numpy as np import matplotlib.pyplot as plt pam = pyPamtra.pyPamtra() pam.df.addHydrometeor(('ice', 0.5, -1, 917,917 * np.pi / 6., 3, np.pi/4., 2, 0, 10, 'exp', 3000, 3e8, -99.0, -99.0, 100e-6, 1000e-6, 'tmatrix', 'heymsfield10_particles', 90.0)) pam = pyPamtra.importer.createUsStandardProfile(pam,hgt_lev=np.arange(1000,1300,200)) freqs = [9.5] pam.set["verbose"] = 0 pam.set["pyVerbose"] =0 pam.nmlSet["passive"] = False pam.nmlSet["radar_mode"] = "spectrum" pam.nmlSet["randomseed"] = 10 #pam.nmlSet["radar_dualpol"] = "both" pam.nmlSet["radar_polarisation"] = "NN,HH,VV,HV" pam.p["hydro_q"][:] = 0.001 pam.runPamtra(freqs,checkData=False) #plot(pam.r["Ze"].ravel()) #plt.plot(pam.r["radar_vel"],pam.r["radar_spectra"][0,0,0,2]) plt.figure(11) plt.clf() for i_p in range(pam.set["radar_npol"]):
import pyPamtra from copy import deepcopy import matplotlib.pyplot as plt import numpy as np plt.figure() pam = pyPamtra.pyPamtra() #!name as_ratio liq_ice rho_ms a_ms b_ms alpha beta moment_in nbin dist_name p_1 p_2 p_3 p_4 d_1 d_2 scat_name vel_size_mod canting pam.df.addHydrometeor(('ice', 1.0, -1, 200,-99,-99, np.pi/4., 2, 0, 100, 'exp', 3000, 3e8, -99.0, -99.0, 100e-6, 1000e-6, 'mie-sphere', 'heymsfield10_particles',0.0)) pam = pyPamtra.importer.createUsStandardProfile(pam,hgt_lev=np.arange(1000,1300,200)) pam.p["airturb"][:] = 0.2 freqs = [35.5]#,80,150] pam.set["verbose"] = 0 pam.set["pyVerbose"] =0 pam.nmlSet["data_path"] = "/work/mmaahn/pamtra_data/" pam.nmlSet["randomseed"] = 0 pam.nmlSet["radar_mode"] = "spectrum" pam.nmlSet["radar_aliasing_nyquist_interv"] = 3 pam.nmlSet["hydro_adaptive_grid"] = False pam.p["hydro_q"][:] = 0.002 pam.nmlSet["save_psd"] = True pam.runPamtra(freqs,checkData=False) plt.plot(pam.r["radar_vel"],pam.r["radar_spectra"][0,0,0,0,0])
import sys import pyPamtra # main pamtra module import os # import operating system module # os.environ['PAMTRA_DATADIR'] = '/net/sever/mech/pamtra/data/' pam = pyPamtra.pyPamtra() # basic empty pyPamtra object with default settings pam.df.addHydrometeor(("ice", -99., -1, 917., 130., 3.0, 0.684, 2., 3, 1, "mono_cosmo_ice", -99., -99., -99., -99., -99., -99., "mie-sphere", "heymsfield10_particles", 0.0)) pamData = dict() pamData["temp"] = [275., 274., 273.] pamData["relhum"] = [10., 90., 90.] pamData["hgt"] = [400., 1500., 2500.] pamData["press"] = [90000., 80000., 70000.] pam.createProfile(**pamData) # create a pamtra profile. pam.runPamtra(89.0)