Source code for stompy.tide_consts

from __future__ import print_function
# reads in tide_consts.txt and sets basically the same info (a subset) of
# what tide_data.py sets

# lun_node
# v0u
# omegas
# const_names

import os, os.path
import numpy as np

fp = open(os.path.join(os.path.dirname(__file__),'tide_consts.txt'))

[docs]def tokenize(fp): """ generator for tokenizing files """ for line in fp: line = line.strip() if line[0] == '#': continue for tok in line.split(): yield tok
# awkward PY2/3 compat gen=tokenize(fp) gettok = lambda: next(gen) nconsts = int(gettok()) const_names = [None]*nconsts speeds = np.zeros( (nconsts,) ) # degrees per hour for i in range(nconsts): const_names[i] = gettok() speeds[i] = float(gettok()) # equilibrium arguments: start_year = int( gettok() )
[docs]def read_block(): num_years = int( gettok() ) data = np.zeros( (nconsts,num_years), np.float64 ) for i in range(nconsts): name = gettok() if name != const_names[i]: raise Exception("Expected %s, got %s"%(const_names[i],name)) for year_offset in range(num_years): data[i,year_offset] = float(gettok()) end = gettok() if end != '*END*': raise Exception("Expected *END*, got %s"%end) return data
v0u = read_block() lun_nodes = read_block() if lun_nodes.shape[1] != v0u.shape[1]: print("count of lunar nodes (%i) differs from equ. arguments (%i)"%(lun_nodes.shape[1], v0u.shape[1])) num_years = min(lun_nodes.shape[1],v0u.shape[1]) years = np.arange(start_year,start_year+num_years)