def METHOD_NAME(self, lat0: 'lat', lon0: 'lon', lat1: 'lat', lon1: 'lon',
           year: int=None, month: int=None, day: int=None, hour: int=None):
    ''' WINDECMWF: Load a windfield directly from NOAA database.
        Arguments:
        - lat0, lon0, lat1, lon1 [deg]: Bounding box in which to generate wind field
        - year, month, day, hour: Date and time of wind data (optional, will use
          current simulation UTC if not specified).
    '''
    self.lat0, self.lon0, self.lat1, self.lon1 =  min(lat0, lat1), \
                          min(lon0, lon1), max(lat0, lat1), max(lon0, lon1)
    self.year = year or bs.sim.utc.year
    self.month = month or bs.sim.utc.month
    self.day = day or bs.sim.utc.day
    self.hour = hour or bs.sim.utc.hour
    # round hour to 3 hours
    self.hour  = round(self.hour/3) * 3
    if self.hour == 24:
        ymd0 = "%04d%02d%02d" % (self.year, self.month, self.day)
        ymd1 = (datetime.datetime.strptime(ymd0, '%Y%m%d') + 
                datetime.timedelta(days=1))
        self.year  = ymd1.year
        self.month = ymd1.month
        self.day   = ymd1.day
        self.hour  = 0
    txt = "Loading wind field for %s-%s-%s..." % (self.year, self.month, self.day)
    bs.scr.echo("%s" % txt)
    netcdf = self.fetch_nc(self.year, self.month, self.day)
    if netcdf is None or self.lat0 == self.lat1 or self.lon0 == self.lon1:
        return False, "Wind data non-existend in area [%d, %d], [%d, %d]. " \
            % (self.lat0, self.lat1, self.lon0, self.lon1) \
            + "time: %04d-%02d-%02d" \
            % (self.year, self.month, self.day)
    # first clear exisiting wind field
    self.clear()
    # add new wind field
    data = self.extract_wind(netcdf, self.lat0, self.lon0, self.lat1, self.lon1, self.hour).T
    data = data[np.lexsort((data[:, 2], data[:, 1], data[:, 0]))] # Sort by lat, lon, alt
    reshapefactor = int((1 + (max(self.lat0, self.lat1) - min(self.lat0, self.lat1))*4) * \
                        (1 + (max(self.lon0, self.lon1) - min(self.lon0, self.lon1))*4))
    lat     = np.reshape(data[:,0], (reshapefactor, -1)).T[0,:]
    lon     = np.reshape(data[:,1], (reshapefactor, -1)).T[0,:]
    veast   = np.reshape(data[:,3], (reshapefactor, -1)).T
    vnorth  = np.reshape(data[:,4], (reshapefactor, -1)).T
    windalt = np.reshape(data[:,2], (reshapefactor, -1)).T[:,0]
    self.addpointvne(lat, lon, vnorth, veast, windalt)        
    return True, "Wind field updated in area [%d, %d], [%d, %d]. " \
        % (self.lat0, self.lat1, self.lon0, self.lon1) \
        + "time: %04d-%02d-%02d" \
        % (self.year, self.month, self.day)