# Copyright (C) 2020 Merspieler, merspieler _at_ airmail.cc
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

from time import time, gmtime

def getForecast(cycle):
	ts = gmtime(time() - 18000)
	return ts.tm_hour - (ts.tm_hour % 3)

def getFilename(dc, fc):
	return 'gfs.t{:02d}z.pgrb2full.0p50.f0{:02d}'.format(dc.cycle, fc)

def getMillibars(alt):
	if alt < 710 or alt > 54000: # 1000mb and 75mb
		return -9999;
	if alt >= 710 and alt < 1410:
		return 975;
	if alt >= 1410 and alt < 2135:
		return 950;
	if alt >= 2135 and alt < 2875:
		return 925;
	if alt >= 2875 and alt < 4000:
		return 900;
	if alt >= 4000 and alt < 5600:
		return 850;
	if alt >= 5600 and alt < 7235:
		return 800;
	if alt >= 7235 and alt < 8995:
		return 750;
	if alt >= 8995 and alt < 10820:
		return 700;
	if alt >= 10820 and alt < 12775:
		return 650;
	if alt >= 12775 and alt < 14865:
		return 600;
	if alt >= 14865 and alt < 17100:
		return 550;
	if alt >= 17100 and alt < 19530:
		return 500;
	if alt >= 19530 and alt < 22160:
		return 450;
	if alt >= 22160 and alt < 25065:
		return 400;
	if alt >= 25065 and alt < 27450:
		return 350;
	if alt >= 27450 and alt < 29170:
		return 325;
	if alt >= 29170 and alt < 31000:
		return 300;
	if alt >= 31000 and alt < 32965:
		return 275;
	if alt >= 32965 and alt < 35100:
		return 250;
	if alt >= 35100 and alt < 37400:
		return 225;
	if alt >= 37400 and alt < 39950:
		return 200;
	if alt >= 39950 and alt < 42800:
		return 175;
	if alt >= 42800 and alt < 46000:
		return 150;
	if alt >= 46000 and alt < 49750:
		return 125;
	if alt >= 49750 and alt < 54000:
		return 100;
	return -9999;