def cspec(path, smv2="smv2.log"): if not os.path.isfile(smv2): if os.path.isdir(smv2): smv2 = os.path.join(smv2, "smv2.log") else: smv2 = os.path.join(os.path.dirname(path), smv2) diaginfo, tracerinfo = get_info_for_cspec(get_cspec(smv2)) return bpch(path, diaginfo=diaginfo, tracerinfo=tracerinfo)
def cspec(path, smv2='smv2.log'): if not os.path.isfile(smv2): if os.path.isdir(smv2): smv2 = os.path.join(smv2, 'smv2.log') else: smv2 = os.path.join(os.path.dirname(path), smv2) diaginfo, tracerinfo = get_info_for_cspec(get_cspec(smv2)) return bpch(path, diaginfo=diaginfo, tracerinfo=tracerinfo)
from collections import OrderedDict import numpy as np from PseudoNetCDF import interpvars, getvarpnc, extract from netCDF4 import Dataset from PseudoNetCDF.geoschemfiles import bpch f = bpch('testdata/ts20100101.bpch'); metf = Dataset('testdata/METBDY3D_100101') oldbc = Dataset('geos2cmaq.20100101.nc') def pres_from_sigma(sigma, pref, ptop, avg = False): pres = sigma * (pref - ptop) + ptop if avg: pres = pres[:-1] + np.diff(pres) / 2. return pres vert_out = pres_from_sigma(metf.VGLVLS, 101325., metf.VGTOP, avg = True) vert_in = f.variables['layer'][:] from fast_interp import get_interp_w w = get_interp_w(vert_in, vert_out) print -1 ft = getvarpnc(f.groups['IJ-AVG-$'], None) xf = extract(ft, [oldbc.lonlatcoords], unique = True); print 0 xft = getvarpnc(xf, None) print 1 xf1 = extract(xft, [oldbc.lonlatcoords]) print 2 def check(f): lonlat = f.lonlatcoords.split('/') lat, lon = f.variables['geos_latitude_bounds'], f.variables['geos_longitude_bounds']
re.M | re.DOTALL, ) gv = reo.search(text).groupdict() active = [v.strip().split()[1] for v in gv["active"].strip().split("\n")] inactive = gv["inactive"].replace("\n", " ").split() dead = gv["dead"].replace("\n", " ").split() all = active + inactive # + dead return all def get_info_for_cspec(all): out = "" for si, spc in enumerate(all): out += "%-8s %-8s cspec 0.000E-00 1 %-8d 1.000E+00 molec/cm3\n" % (spc, spc, si + 1) try: from StringIO import StringIO except ImportError: from io import StringIO diag = StringIO("#\n 0 IJ-CHK-$ Tracer concentration \n") return diag, StringIO(out) if __name__ == "__main__": specs = get_cspec("testdata/smv2.log") diagfile, trcfile = get_info_for_cspec(specs) from PseudoNetCDF.geoschemfiles import bpch f = bpch("/Users/barronh/Development/testrun/BC.CSPEC.20050101", tracerinfo=trcfile, diaginfo=diagfile)
active = [v.strip().split()[1] for v in gv['active'].strip().split('\n')] inactive = gv['inactive'].replace('\n', ' ').split() dead = gv['dead'].replace('\n', ' ').split() all = active + inactive #+ dead return all def get_info_for_cspec(all): out = "" for si, spc in enumerate(all): out += "%-8s %-8s cspec 0.000E-00 1 %-8d 1.000E+00 molec/cm3\n" % ( spc, spc, si + 1) try: from StringIO import StringIO except ImportError: from io import StringIO diag = StringIO( "#\n 0 IJ-CHK-$ Tracer concentration \n" ) return diag, StringIO(out) if __name__ == '__main__': specs = get_cspec('testdata/smv2.log') diagfile, trcfile = get_info_for_cspec(specs) from PseudoNetCDF.geoschemfiles import bpch f = bpch('/Users/barronh/Development/testrun/BC.CSPEC.20050101', tracerinfo=trcfile, diaginfo=diagfile)