Exemplo n.º 1
0
def forcing_from_thredds(sites, forc_vars):
    """

    :param sites: dict with site-name as key and list of [lat, lon] as value.
    .param forc_vars: list of forcing variables to be inserted as forcing
    :return:
    """
    thredds_url = "http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_test2_5km_latest.nc"
    thredds_file = netCDF4.Dataset(thredds_url, "r")
    latvar = thredds_file.variables["latitude"]
    lonvar = thredds_file.variables["longitude"]

    no_points = len(sites)
    point_index = [tunnel_fast(latvar, lonvar, coord[0], coord[1]) for coord in sites.values()]

    cnc = CrocusForcing(no_points=no_points, source="arome")  # init Crocus forcing file
    cnc.forc_time_step_v[:] = 3600.0

    for point in range(no_points):
        for var in forc_vars:
            cnc.insert_arome_var(var, thredds_file.variables)
        # cnc.tair_v[:, point] = thredds_file.variables[cnc.crocus_arome_lut[cnc.tair_v.name]][:, 0, point_index[point][0], point_index[point][1]]

    time_v = thredds_file.variables["time"]
    cnc.time_v[:] = time_v[:]
    cnc.time_v.units = time_v.units

    cnc.close()
    thredds_file.close()
Exemplo n.º 2
0
# Long-wave radiation
lw_amp = 75. # amplitude of the long-wave signal
lw_offset = - (2*np.pi*3./24.) # offset of the daily LW maximum wrt the SW maximum
lw_mean = 275. # LW minimum in W/m2
lw_down = (np.sin(2*np.pi*1/24.*n_arr + lw_offset) * lw_amp) + lw_mean # W/m2

sca_sw_down = np.zeros_like(time_arr, dtype=float)

wind = np.zeros_like(time_arr, dtype=float)
wind += 2.0 # m/s

wind_dir = np.zeros_like(time_arr, dtype=float)

co2_air = np.zeros_like(time_arr, dtype=float)

cnc = CrocusForcing(opt_param=['Wind_DIR', 'CO2air']) # init Crocus forcing file

# Set some properties
cnc.forc_time_step_v[:] = dt.seconds
#cnc.aspect_v[:] = 0.0
cnc.uref_v[:] = 10.0
cnc.zref_v[:] = 2.0
cnc.zs_v[:] = 950.0
cnc.lat_v[:] = 60.0
cnc.lon_v[:] = 10.0

# TODO: use date2num to get the time right
cnc.time_v[:] = time_v
cnc.time_v.units = t_units

# Set the created forcing parameters
Exemplo n.º 3
0
points = {'Hemsedal': [60.86, 8.6],
          'Nordøyan fyr': [64.8, 10.55]
          }

indicies = [tunnel_fast(latvar, lonvar, coord[0], coord[1]) for coord in points.values()]
#[print(coord[0], coord[1]) for coord in points.values()]
print(indicies, type(indicies[0]), len(points))

# iy,ix = tunnel_fast(latvar, lonvar, 60.86, 8.6) # Hemsedal
# iy,ix = tunnel_fast(latvar, lonvar, 64.8, 10.55) # Nordøyan fyr

#print('Closest lat, lon: {0}, {1}; corresponding to indicies: {2}, {3}'.format(latvar[iy,ix], lonvar[iy,ix], iy, ix))


cnc = CrocusForcing(no_points=len(points))
for point in xrange(len(points)):
    print(point, indicies[point][0], indicies[point][1])
    cnc.tair_v[:, point] = ncfile.variables['air_temperature_2m'][:, 0, indicies[point][0], indicies[point][1]]

time_v = ncfile.variables['time']
cnc.time_v[:] = time_v[:]
cnc.time_v.units = time_v.units

cnc.close()
ncfile.close()

#temperature_plot(ta2m, times)


Exemplo n.º 4
0

rainf = np.zeros_like(time_arr, dtype=float)

snowf = np.zeros_like(time_arr, dtype=float)
snowf[mask_snow1[0]] += 1.0e-03
snowf[mask_snow2[0]] += 1.0e-03
snowf[mask_snow3[0]] += 1.0e-03


wind = np.zeros_like(time_arr, dtype=float)
wind += 2.0 # m/s

wind_dir = np.zeros_like(time_arr, dtype=float)

cnc = CrocusForcing(opt_param=['Wind_DIR']) # init Crocus forcing file

# Set some properties
cnc.forc_time_step_v[:] = dt.seconds

cnc.uref_v[:] = 10.0
cnc.zref_v[:] = 2.0
cnc.zs_v[:] = 950.0
cnc.lat_v[:] = 60.0
cnc.lon_v[:] = 10.0

# TODO: use date2num to get the time right
cnc.time_v[:] = time_v
cnc.time_v.units = t_units

# Set the created forcing parameters