예제 #1
0
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
예제 #3
0
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"]):
예제 #4
0
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])
예제 #5
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)