Back to home page

darwin3

 
 

    


Warning, /tools/darwin/mkdiagnosticsdata is written in an unsupported language. File is not indexed.

view on githubraw file Latest commit 8fbfd1f3 on 2018-02-26 18:39:21 UTC
8fbfd1f382 Oliv*0001 #!/usr/bin/env python
                0002 ''' run in run dir '''
                0003 import sys
                0004 import os
                0005 import re
                0006 import string
                0007 
                0008 digits = string.digits + string.lowercase + string.uppercase
                0009 
                0010 def iofmt(i):
                0011     if i < 100:
                0012         return '{:02d}'.format(i)
                0013     elif i < 620:
                0014         a,b = divmod(i-100, 52)
                0015         return '{}{}'.format(a, digits[10+b])
                0016     else:
                0017         a,b = divmod(i-620, 62)
                0018         return '{}{}'.format(digits[10+a], digits[b])
                0019 
                0020 
                0021 try:
                0022     with open('data.ptracers') as f:
                0023         for line in f:
                0024             m = re.match(r'^ *ptracers_numinuse *= *([0-9]*)', line, re.I)
                0025             if m:
                0026                 ntr = int(m.group(1))
                0027                 break
                0028         else:
                0029             sys.exit('Could not find ptracers_numinuse.')
                0030 
                0031     dt = None
                0032     with open('data') as f:
                0033         for line in f:
                0034             m = re.match(r'^ *deltat([a-z]*) *= *([0-9]*)', line, re.I)
                0035             if m:
                0036                 tp = m.group(1)
                0037                 if tp.lower() == 'clock' or dt is None:
                0038                     dt = int(m.group(2))
                0039     if dt is None:
                0040         sys.exit('Could not find time step.')
                0041 except:
                0042     sys.exit('Could not extract parameters from namelist files.\nPlease run in input or run dir.')
                0043 
                0044 args = sys.argv[1:]
                0045 with len(args) and open(args[0]) or sys.stdout as f:
                0046     f.write(" &diagnostics_list\n")
                0047     f.write(" filename(1)= 'darwin',\n")
                0048     f.write(" frequency(1)= {0}.,\n".format(dt))
                0049     for i in range(1, ntr+1):
                0050         f.write(" fields({i},1)= 'TRAC{io}  ',\n".format(i=i, io=iofmt(i)))
                0051     f.write(" &\n")
                0052     f.write(" &diag_statis_parms\n")
                0053     f.write(" &\n")